Puesta en funcionamiento -- > FoxFaceClassSourcecode

01/04/2020

Vea también el capítulo anterior FoxFace y el siguiente Restyling FoxFace -- > FoxFace II

 

Autor del proyecto FoxFace: RetailSystems http://www.retailsystems.cz/foxfaceEn.htm

Lo primero decir que la entrega de FoxFaceClassSourcecode necesita unos pequeños arreglos para funcionar correctamente, pero es gratis, no lo olvidemos. Todo lo que vimos hasta ahora en el capítulo anterior funcionaba bastante bien pero...

FoxFaceClassSourcecode

Lo primero, renombro la carpeta FoxFaceClassSourcecode a FoxFace

En la carpeta que he renombrado, ahora FoxFace, tenemos varias carpetas que se ven en la imagen de abajo, entre ellas:

  • FoxFace: Muchas carpetas y ejecutables compilados en la versión Vfp 8. Eso sí tenemos los proyectos y el código fuente, pero necesitamos configurar cosas y no tenemos ni idea de momento.
  • FoxFaceDesigner: Diseñador de estilos que ya hemos probado. Hacemos clic en ejecutable y nos sale el mensaje y nos dice que esta compilado en otra versión (Vfp 8). Abrimos el proyecto, compilamos y funcionando. De todas formas vemos desorden y carpetas que sobran o que no están bien ubicadas. Más tarde ordenaremos todo a nuestro gusto.

 

FoxFace un vistazo general

Se puede ver esto:

 

Entro en la carpeta sample que tiene el proyecto sampleproyect.pjx y me doy cuenta en principio de que funciona bien pero descubro que la clase foxface.vcx pertenece a una versión mas antigua, la 1.0 mientras que la última entrega es la 1.8.

Renombro la carpeta Samples a FoxFace 1.0 y el proyecto sampleproyect.pjx a Foxface.pjx. Posteriormente corto y pego FoxFace 1.0 en mi carpeta de proyectos de Visual Foxpro para tener todo mas ordenado y diferenciar las distintas versiones de clase.

Vuelvo a la carpeta FoxFace

Nota: Tal y como viene FoxFace 1.8 tenemos un funcionamiento con anomalías y necesitamos cambiar código para que sea utilizable.

------

Ahora ya he vuelto a la carpeta FoxFace

En la carpeta lib está la clase foxface.vcx que se corresponde con la versión 1.8, que mas tarde, voy a transformarla en la versión 2.0

Abro el proyecto Foxface.pjx y descubro que config.exe y test.exe son formularios (config.scx y test.scx) de este proyecto que por cualquier cosa se han compilado independientemente.

  • test.scx es el formulario de demostración que se abre al ejecutar FoxFace.exe
  • config.scx configura y modifica el archivo config.ini

Compilo y ejecuto FoxFace y funcionando, pero encuentro los botones de la barra de títulos muy cambiados y el formulario no tiene skin.

Descubro que en config.ini viene el skin a utilizar y es donde voy a configurar el skin que deseo visualizar en la aplicación. Abro config.ini y edito, cambio el nº de skin, de 1 a 6 que son los que tenemos disponibles y esto lo sabemos abriendo foxface.dbf.

Lista de Skins

1

Retail

2

Pixia

3

Sarkofag

4

Red Alert

5

Axis

6

Deviant

Cualquier valor diferente, por ej. 0, dejará sin skin la aplicación.

 

Main.prg

Este es el código de main.prg tal y como viene, pero como llevo mas de una hora dando vueltas, ya se lo que tengo que hacer. En rojo el código que añado o modifico:

ON ERROR do errorhandler with ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO()
_SCREEN.NewObject("FoxFace","FoxFace","lib\foxface.vcx")

*-- Camf -- -- -- -- -- -- -- --
lh=FOPEN("config.ini")
*this.skinid=val(FGETS(lh))
_SCREEN.Foxface.skinid = val(FGETS(lh))
FCLOSE(lh)
_SCREEN.Foxface.Init

*-- * -- -- -- -- -- -- -- -- --

SET SYSMENU OFF

*DO menus\TEST.MPR
DO FORM test
READ EVENTS

PROCEDURE errorHandler
PARAMETERS errNum, zprava, kod, actualPrg, radek
ON ERROR
PUBLIC saveDB
SET MEMOWIDTH TO 80

IF NOT FILE ( "chyby.DBF")
CREATE TABLE chyby FREE ( datum D(8), cas C(5), program C(50),;
ErrorNum N(4), msg C(240), kodt C(240), formular C(100), radekt N(4))
ENDIF
IF NOT USED ( "chyby" )
USE chyby IN 0
ENDIF
appName=SYS (16,1)

INSERT INTO chyby VALUES ( DATE(), TIME(), appName, errNum, zprava, kod, actualPrg, radek)
USE IN chyby
MESSAGEBOX(appName+CHR(13)+actualPrg+CHR(13)+STR(radek)+CHR(13)+kod + CHR(13);
+ ALLTRIM(STR(errnum))+CHR(13)++zprava,16,"")

CLEAR EVENTS
CLOSE DATABASES ALL
quit
ENDPROC

 

El siguiente código crea el objeto FoxFace para tener skin en la ventana principal de Vfp _Screen:

_SCREEN.NewObject("FoxFace","FoxFace","lib\foxface.vcx")

 

La siguiente línea que abre un menú me da una idea para añadir también el formulario config.scx en el código y probarlo

*DO menus\TEST.MPR

 

La siguiente línea nos dirige al formulario test.scx:

DO FORM test

 

Foxface.vcx

Abro en la biblioteca Foxface.vcx la clase Foxface

Cambio el valor de la siguiente propiedad:

.skinid = 0

Guardo los cambios y voy al paso siguiente.

 

Test.scx

Abro el formulario test.scx selecciono el objeto FoxFace1:

.init

Quitamos los * en las tres primeras lineas y nos queda así el código:

lh=FOPEN("config.ini")
this.skinid=val(FGETS(lh))
FCLOSE(lh)
DODEFAULT()

.skinid = 0

Efectúo mas pruebas y todo Ok.

 

Capítulos

 

Vea también

 


 

No olvide de hacer una donación a RetailSystems, para que pueda continuar mejorando este proyecto.

 

Referencias

Autor del proyecto FoxFace: RetailSystems http://www.retailsystems.cz/foxfaceEn.htm

Puesta en funcionamiento -- > FoxFaceClassSourcecode -- >: Camf.

 


 

 

 



error: Contenido protegido